[Coding022] Sort - 选择排序

简单选择排序

Ben 2024/01/06

More coding records

Get the knowledge flowing and circulating! :)

目录

标题:选择排序

选择排序(Selection sort)是一种简单直观的排序算法。

选择排序动画演示

它的工作原理如下:

  1. 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置;

  1. 然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。

以此类推,直到所有元素均排序完毕。

image-20240106112715042

选择排序主要优点与数据移动有关。如果某个元素位于正确的最终位置上,则它不会被移动。

  • 选择排序每次交换一对元素,它们当中至少有一个将被移到其最终位置上,因此对n个元素的表进行排序总共进行至多(n1)次交换。

  • 在所有的完全依靠交换去移动元素的排序方法中,选择排序属于非常好的一种。

——维基百科

选排思想

image-20240106112844353

image-20240106112856736

Fig. 简单选择排序的伪码表示

典型过程手绘过程分析

image-20240106165024113

Java语言代码实现

运行结果

image-20240106113625258

复杂度

平均时间复杂度O(n2)
最坏时间复杂度O(n2)
最优时间复杂度O(n2)
空间复杂度总共O(n),需要辅助空间O(1)
最佳解偶尔出现

复杂度分析